iT邦幫忙

2023 iThome 鐵人賽

DAY 9
0

繼前面將網頁下拉到最後一頁,讓全部的內容都載完之後,需要做兩件事:
1.得到網頁的全部內容,並從中獲取需要的部分
2.將整理過的資料,存到excel/資料庫中

第一步:

我們可以用selenium的page_source()方法來獲得網頁的原始碼(獲得的原始碼相當於右鍵點"檢視原始碼"獲得的網頁html,如下圖),並搭配各種html解析的套件,將需要的內容解析出來
https://ithelp.ithome.com.tw/upload/images/20230926/20163056YGX4jQsW9A.png

獲得網頁原始碼後,使用html解析的套件(這邊使用beautifulSoup)將需要的工作名稱/公司名/公司地址/薪水/經歷要求/學歷要求/工作內容/詳情連結解析出來(使用方法類似於css選取器)

第二步:

得到各個資料後,將資料存入excel中, 這邊採用openpyxl套件寫入,希望的的格式如下圖:
列=蒐集到的需要的各欄位的資料
行=上述各欄位(工作名稱/公司名/公司地址/薪水/經歷要求/學歷要求/工作內容/詳情連結)

https://ithelp.ithome.com.tw/upload/images/20230926/20163056AAboIJvgmr.png

因此使用雙重迴圈的方式,將資料寫入各個儲存格中
代碼如下:

import openpyxl
#寫進excel
        workbook=openpyxl.Workbook()
        sheet=workbook.worksheets[0] # 第一個工作表
        headers=['職稱','公司名','地址','薪水','經歷要求','學歷','工作內容','詳情']
        sheet.append(headers)
        rows=sheet.max_row
        cols=sheet.max_column
        # sheet.cell(row=2,column=1).value='100' #A2
        
        #雙重迴圈:列=蒐集到的需要的各欄位的資料,行=各欄位
        data_list=[job_names,company_names,company_addrs,salaries,experiences,educations,contents,details]
        for i,val_list in enumerate(data_list):
            for j,vals in enumerate(val_list):
                sheet.cell(row=int(j+2),column=int(i+1)).value=vals
        
        workbook.save('./test_engineer.xlsx')

上一篇
104網站爬蟲-搜尋結果網頁下拉
下一篇
104 爬蟲-使用pyMySQL查詢資料庫資料-1
系列文
定期推送油價通知到Line上的訊息通知,並使用GitLab CI排程搭配Google Colab16
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言